/**
 * Base64 转 Blob（内部工具）
 */
function base64ToBlob(base64) {
	const parts = base64.split(';base64,');
	if (parts.length !== 2) {
		throw new Error('无效的 Base64 字符串');
	}
	const mimeType = parts[0].split(':')[1] || 'image/png';
	const byteString = atob(parts[1]);
	const ab = new ArrayBuffer(byteString.length);
	const ia = new Uint8Array(ab);
	for (let i = 0; i < byteString.length; i++) {
		ia[i] = byteString.charCodeAt(i);
	}
	return new Blob([ab], { type: mimeType });
}

/**
 * 自动识别临时路径类型并转换为上传源
 * - 若为 Base64（data:image/...）→ 转为 File（用于 H5）
 * - 否则视为小程序临时路径 → 直接返回字符串
 * @param {string} tempPath
 * @returns {string | File}
 */
export function convertTempPath(tempPath) {
	if (!tempPath) {
		throw new Error('临时路径不能为空');
	}

	// 判断是否为 Base64 格式的图片（H5 环境典型特征）
	const isBase64Image = /^data:image\/(png|jpg|jpeg|gif|webp);base64,/i.test(
		tempPath
	);

	if (isBase64Image) {
		const blob = base64ToBlob(tempPath);
		return new File([blob], 'poster.png', { type: blob.type });
	} else {
		// 小程序临时路径（wxfile://, apfile://, /tmp/... 等）
		if (typeof tempPath !== 'string') {
			throw new Error('无效的临时路径格式');
		}
		return tempPath;
	}
}
